Skip to content

Conversation

@hanna-skryl
Copy link
Collaborator

Closes #1217

  • Add support for multiple tsconfig paths in the TypeScript plugin
  • Add tsconfigFromAllNxProjects helper to auto-discover tsconfigs in Nx workspaces
  • Use the Nx helper in the Code PushUp preset
  • Update README documentation

@hanna-skryl hanna-skryl self-assigned this Jan 22, 2026
@github-actions github-actions bot added 📖 Project documentation improvements or additions to the project documentation 🔬 testing writing tests 🛠️ tooling 🧩 typescript-plugin TypeScript plugin labels Jan 22, 2026
@nx-cloud
Copy link

nx-cloud bot commented Jan 22, 2026

View your CI Pipeline Execution ↗ for commit 28d9038

Command Status Duration Result
nx run-many --target=build --parallel=3 ✅ Succeeded 34s View ↗

☁️ Nx Cloud last updated this comment at 2026-01-27 20:21:58 UTC

@pkg-pr-new
Copy link

pkg-pr-new bot commented Jan 22, 2026

Open in StackBlitz

@code-pushup/ci

npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/ci@1229

@code-pushup/cli

npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/cli@1229

@code-pushup/core

npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/core@1229

@code-pushup/create-cli

npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/create-cli@1229

@code-pushup/nx-plugin

npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/nx-plugin@1229

@code-pushup/axe-plugin

npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/axe-plugin@1229

@code-pushup/models

npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/models@1229

@code-pushup/coverage-plugin

npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/coverage-plugin@1229

@code-pushup/eslint-plugin

npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/eslint-plugin@1229

@code-pushup/js-packages-plugin

npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/js-packages-plugin@1229

@code-pushup/jsdocs-plugin

npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/jsdocs-plugin@1229

@code-pushup/lighthouse-plugin

npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/lighthouse-plugin@1229

@code-pushup/typescript-plugin

npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/typescript-plugin@1229

@code-pushup/utils

npm i https://pkg.pr.new/code-pushup/cli/@code-pushup/utils@1229

commit: 28d9038

@github-actions
Copy link
Contributor

github-actions bot commented Jan 22, 2026

Code PushUp

🤨 Code PushUp report has both improvements and regressions – compared current commit 681fd0b with previous commit d3230f1.

🕵️ See full comparison in Code PushUp portal 🔍

🏷️ Categories

🏷️ Category ⭐ Previous score ⭐ Current score 🔄 Score change
Documentation 🔴 42 🟡 53 ↑ +10.4
Security 🟡 51 🔴 47 ↓ −4.2
Performance 🔴 36 🔴 35 ↓ −0.9
Code coverage 🟢 92 🟢 93 ↑ +0.1
Bug prevention 🟡 75 🟡 75 ↓ −0.1
Axe Accessibility 🟡 88 🟡 88 ↓ −0.1
Code style 🟢 100 🟢 100
Updates 🟡 78 🟡 78
Type Safety 🟡 67 🟡 67
Miscellaneous 🟡 67 🟡 67
Accessibility 🟢 92 🟢 92
Best Practices 🟢 100 🟢 100
SEO 🟢 92 🟢 92
👍 2 groups improved, 👎 2 groups regressed, 👍 9 audits improved, 👎 5 audits regressed, 24 audits changed without impacting score

🗃️ Groups

🔌 Plugin 🗃️ Group ⭐ Previous score ⭐ Current score 🔄 Score change
JSDocs coverage Documentation coverage 🔴 42 🟡 53 ↑ +10.4
JS packages npm audit 🟡 51 🔴 47 ↓ −4.2
Lighthouse Performance 🔴 36 🔴 35 ↓ −0.9
Code coverage Code coverage metrics 🟢 92 🟢 93 ↑ +0.1

30 other groups are unchanged.

🛡️ Audits

🔌 Plugin 🛡️ Audit 📏 Previous value 📏 Current value 🔄 Value change
JSDocs coverage Properties coverage 🟥 30 undocumented properties 🟥 38 undocumented properties ↑ +26.7 %
JSDocs coverage Classes coverage 🟥 6 undocumented classes 🟨 5 undocumented classes ↓ −16.7 %
JSDocs coverage Methods coverage 🟨 13 undocumented methods 🟨 11 undocumented methods ↓ −15.4 %
Lighthouse Speed Index 🟥 6.2 s 🟥 7.0 s ↑ +13.5 %
JS packages Vulnerabilities for npm prod dependencies. 🟨 10 vulnerabilities (2 high, 1 moderate, 7 low) 🟨 11 vulnerabilities (2 high, 2 moderate, 7 low) ↑ +10 %
JSDocs coverage Functions coverage 🟥 577 undocumented functions 🟥 586 undocumented functions ↑ +1.6 %
Lighthouse First Contentful Paint 🟥 3.0 s 🟥 3.1 s ↑ +3.4 %
JSDocs coverage Variables coverage 🟥 268 undocumented variables 🟥 275 undocumented variables ↑ +2.6 %
JSDocs coverage Types coverage 🟥 268 undocumented types 🟥 264 undocumented types ↓ −1.5 %
Lighthouse Total Blocking Time 🟥 2,080 ms 🟥 1,840 ms ↓ −11.5 %
Lighthouse Time to Interactive 🟥 13.3 s 🟥 13.7 s ↑ +2.9 %
Code coverage Line coverage 🟩 92.3 % 🟩 92.7 % ↑ +0.4 %
Code coverage Branch coverage 🟨 89 % 🟨 89.1 % ↑ +0.1 %
Code coverage Function coverage 🟩 94.3 % 🟩 94.2 % ↓ −0.1 %
Lighthouse Avoids enormous network payloads 🟩 Total size was 2,104 KiB 🟩 Total size was 2,146 KiB ↑ +2 %
Lighthouse Largest Contentful Paint 🟥 11.5 s 🟥 10.7 s ↓ −7 %
Lighthouse Uses efficient cache policy on static assets 🟨 31 resources found 🟨 31 resources found ↑ +0.1 %
Lighthouse Metrics 🟩 100% 🟩 100% ↑ +2.9 %
Lighthouse JavaScript execution time 🟥 4.5 s 🟥 4.1 s ↓ −7.8 %
Lighthouse Minimizes main-thread work 🟥 9.7 s 🟥 9.4 s ↓ −3.1 %
Lighthouse Reduce unused CSS 🟥 Potential savings of 95 KiB 🟥 Potential savings of 125 KiB ↑ +40 %
Lighthouse Max Potential First Input Delay 🟥 990 ms 🟥 1,140 ms ↑ +15.7 %
Lighthouse Server Backend Latencies 🟩 690 ms 🟩 790 ms ↑ +14.1 %
Lighthouse Reduce unused JavaScript 🟥 Potential savings of 226 KiB 🟥 Potential savings of 252 KiB ↑ +4.4 %
Lighthouse Initial server response time was short 🟥 Root document took 600 ms 🟥 Root document took 630 ms ↑ +4.7 %
Lighthouse Network Round Trip Times 🟩 0 ms 🟩 30 ms ↑ +588.8 %
Lighthouse Remove duplicate modules in JavaScript bundles 🟥 Potential savings of 83 KiB 🟥 Potential savings of 87 KiB ↑ +4.4 %
TypeScript Semantic errors 🟥 25 errors 🟥 44 errors ↑ +76 %
Lighthouse Avoids an excessive DOM size 🟥 2,403 elements 🟥 2,386 elements ↓ −0.7 %
JS packages Outdated npm dev dependencies. 🟨 56 outdated package versions (29 major, 19 minor, 8 patch) 🟨 62 outdated package versions (29 major, 25 minor, 8 patch) ↑ +10.7 %
JS packages Vulnerabilities for npm dev dependencies. 🟥 43 vulnerabilities (3 critical, 23 high, 8 moderate, 9 low) 🟥 47 vulnerabilities (3 critical, 10 high, 31 moderate, 3 low) ↑ +9.3 %
JS packages Outdated npm prod dependencies. 🟨 15 outdated package versions (5 major, 8 minor, 2 patch) 🟨 18 outdated package versions (5 major, 11 minor, 2 patch) ↑ +20 %
TypeScript Syntax errors 🟥 5 errors 🟥 7 errors ↑ +40 %
Axe Elements must only use supported ARIA attributes 🟩 101 elements 🟩 99 elements ↓ −2 %
Axe ARIA attributes must be used as specified for the element's role 🟩 101 elements 🟩 99 elements ↓ −2 %
Axe Elements must only use permitted ARIA attributes 🟩 101 elements 🟩 99 elements ↓ −2 %
Axe ARIA attributes must conform to valid names 🟩 101 elements 🟩 99 elements ↓ −2 %
Lighthouse User Timing marks and measures 🟩 0 🟩 192 user timings ↑ +∞ %

641 other audits are unchanged.

@hanna-skryl hanna-skryl force-pushed the typescript-plugin-multi-tsconfig branch from b9c748a to 8f419a0 Compare January 22, 2026 22:46
@github-actions
Copy link
Contributor

github-actions bot commented Jan 22, 2026

Code PushUp

🤨 Code PushUp report has both improvements and regressions – compared current commit 681fd0b with previous commit d3230f1.

💼 Project utils

🤨 Code PushUp report has both improvements and regressions.

🕵️ See full comparison in Code PushUp portal 🔍

🏷️ Category ⭐ Previous score ⭐ Current score 🔄 Score change
Documentation 🔴 45 🟡 60 ↑ +14.6
Code coverage 🟢 95 🟢 95 ↓ −0.4

4 other categories are unchanged.

👍 1 group improved, 👎 1 group regressed, 👍 7 audits improved, 👎 1 audit regressed, 1 audit changed without impacting score

🗃️ Groups

🔌 Plugin 🗃️ Group ⭐ Previous score ⭐ Current score 🔄 Score change
JSDocs coverage Documentation coverage 🔴 45 🟡 60 ↑ +14.6
Code coverage Code coverage metrics 🟢 95 🟢 95 ↓ −0.4

13 other groups are unchanged.

🛡️ Audits

🔌 Plugin 🛡️ Audit 📏 Previous value 📏 Current value 🔄 Value change
JSDocs coverage Properties coverage 🟥 27 undocumented properties 🟥 35 undocumented properties ↑ +29.6 %
JSDocs coverage Classes coverage 🟨 3 undocumented classes 🟨 2 undocumented classes ↓ −33.3 %
JSDocs coverage Methods coverage 🟨 13 undocumented methods 🟨 11 undocumented methods ↓ −15.4 %
JSDocs coverage Variables coverage 🟥 49 undocumented variables 🟥 50 undocumented variables ↑ +2 %
JSDocs coverage Types coverage 🟥 66 undocumented types 🟨 55 undocumented types ↓ −16.7 %
JSDocs coverage Functions coverage 🟥 239 undocumented functions 🟥 244 undocumented functions ↑ +2.1 %
Code coverage Function coverage 🟩 96.2 % 🟩 95.4 % ↓ −0.8 %
Code coverage Branch coverage 🟩 91.8 % 🟩 92 % ↑ +0.2 %
Code coverage Line coverage 🟩 97.8 % 🟩 97.8 % ↓ −0.1 %

435 other audits are unchanged.

💼 Project plugin-coverage

🤨 Code PushUp report has both improvements and regressions.

🕵️ See full comparison in Code PushUp portal 🔍

🏷️ Category ⭐ Previous score ⭐ Current score 🔄 Score change
Code coverage 🟢 90 🟢 92 ↑ +1.9
Documentation 🟡 69 🟡 69 ↓ −0.4

4 other categories are unchanged.

👍 1 group improved, 👎 1 group regressed, 👍 2 audits improved, 👎 1 audit regressed

🗃️ Groups

🔌 Plugin 🗃️ Group ⭐ Previous score ⭐ Current score 🔄 Score change
Code coverage Code coverage metrics 🟢 90 🟢 92 ↑ +1.9
JSDocs coverage Documentation coverage 🟡 69 🟡 69 ↓ −0.4

13 other groups are unchanged.

🛡️ Audits

🔌 Plugin 🛡️ Audit 📏 Previous value 📏 Current value 🔄 Value change
Code coverage Function coverage 🟩 90.6 % 🟩 93.5 % ↑ +3.2 %
JSDocs coverage Functions coverage 🟥 22 undocumented functions 🟥 22 undocumented functions  +0 %
Code coverage Line coverage 🟨 88 % 🟨 89.1 % ↑ +1.2 %

441 other audits are unchanged.

💼 Project plugin-typescript

🤨 Code PushUp report has both improvements and regressions.

🕵️ See full comparison in Code PushUp portal 🔍

🏷️ Category ⭐ Previous score ⭐ Current score 🔄 Score change
Code coverage 🟡 87 🟡 89 ↑ +2
Documentation 🟡 73 🟡 73 ↓ −0.1

4 other categories are unchanged.

👍 1 group improved, 👎 1 group regressed, 👍 2 audits improved, 👎 2 audits regressed, 2 audits changed without impacting score

🗃️ Groups

🔌 Plugin 🗃️ Group ⭐ Previous score ⭐ Current score 🔄 Score change
Code coverage Code coverage metrics 🟡 87 🟡 89 ↑ +2
JSDocs coverage Documentation coverage 🟡 73 🟡 73 ↓ −0.1

13 other groups are unchanged.

🛡️ Audits

🔌 Plugin 🛡️ Audit 📏 Previous value 📏 Current value 🔄 Value change
Code coverage Function coverage 🟨 88.9 % 🟩 92.6 % ↑ +4.2 %
JSDocs coverage Variables coverage 🟥 11 undocumented variables 🟥 13 undocumented variables ↑ +18.2 %
Code coverage Branch coverage 🟨 80.2 % 🟨 79.4 % ↓ −1.1 %
Code coverage Line coverage 🟩 95.5 % 🟩 95.6 % ↑ +0.1 %
JSDocs coverage Functions coverage 🟨 9 undocumented functions 🟨 13 undocumented functions ↑ +44.4 %
JSDocs coverage Types coverage 🟥 8 undocumented types 🟥 11 undocumented types ↑ +37.5 %

438 other audits are unchanged.

💼 Project plugin-eslint

🤨 Code PushUp report has both improvements and regressions.

🕵️ See full comparison in Code PushUp portal 🔍

🏷️ Category ⭐ Previous score ⭐ Current score 🔄 Score change
Documentation 🟡 67 🟡 67 ↓ −0.3
Code coverage 🟢 94 🟢 94 ↑ +0.1

4 other categories are unchanged.

👍 1 group improved, 👎 1 group regressed, 👍 2 audits improved, 👎 2 audits regressed

🗃️ Groups

🔌 Plugin 🗃️ Group ⭐ Previous score ⭐ Current score 🔄 Score change
JSDocs coverage Documentation coverage 🟡 67 🟡 67 ↓ −0.3
Code coverage Code coverage metrics 🟢 94 🟢 94 ↑ +0.1

13 other groups are unchanged.

🛡️ Audits

🔌 Plugin 🛡️ Audit 📏 Previous value 📏 Current value 🔄 Value change
JSDocs coverage Functions coverage 🟥 48 undocumented functions 🟥 48 undocumented functions  +0 %
Code coverage Line coverage 🟩 95 % 🟩 95.3 % ↑ +0.3 %
Code coverage Branch coverage 🟨 86.5 % 🟨 86.8 % ↑ +0.3 %
Code coverage Function coverage 🟩 98.2 % 🟩 98.2 % ↓ −0.1 %

440 other audits are unchanged.

💼 Project plugin-axe

🤨 Code PushUp report has both improvements and regressions.

🕵️ See full comparison in Code PushUp portal 🔍

🏷️ Category ⭐ Previous score ⭐ Current score 🔄 Score change
Documentation 🟡 70 🟡 70 ↓ −0.2
Code coverage 🟢 94 🟢 94 ↑ +0.1

4 other categories are unchanged.

👍 1 group improved, 👎 1 group regressed, 👍 2 audits improved, 👎 1 audit regressed

🗃️ Groups

🔌 Plugin 🗃️ Group ⭐ Previous score ⭐ Current score 🔄 Score change
JSDocs coverage Documentation coverage 🟡 70 🟡 70 ↓ −0.2
Code coverage Code coverage metrics 🟢 94 🟢 94 ↑ +0.1

13 other groups are unchanged.

🛡️ Audits

🔌 Plugin 🛡️ Audit 📏 Previous value 📏 Current value 🔄 Value change
JSDocs coverage Functions coverage 🟨 12 undocumented functions 🟨 12 undocumented functions  +0 %
Code coverage Line coverage 🟨 72.7 % 🟨 73 % ↑ +0.4 %
Code coverage Branch coverage 🟨 89.9 % 🟩 90 % ↑ +0.1 %

440 other audits are unchanged.

💼 Project create-cli

😟 Code PushUp report has regressed.

🕵️ See full comparison in Code PushUp portal 🔍

🏷️ Category ⭐ Previous score ⭐ Current score 🔄 Score change
Code coverage 🟢 96 🟢 96 ↓ −0.2

5 other categories are unchanged.

👎 1 group regressed, 👎 1 audit regressed

🗃️ Groups

🔌 Plugin 🗃️ Group ⭐ Previous score ⭐ Current score 🔄 Score change
Code coverage Code coverage metrics 🟢 96 🟢 96 ↓ −0.2

14 other groups are unchanged.

🛡️ Audits

🔌 Plugin 🛡️ Audit 📏 Previous value 📏 Current value 🔄 Value change
Code coverage Branch coverage 🟨 88.2 % 🟨 87.5 % ↓ −0.8 %

443 other audits are unchanged.

💼 Project ci

😟 Code PushUp report has regressed.

🕵️ See full comparison in Code PushUp portal 🔍

🏷️ Category ⭐ Previous score ⭐ Current score 🔄 Score change
Code coverage 🟢 92 🟢 92 ↓ −0.1

5 other categories are unchanged.

👎 1 group regressed, 👎 1 audit regressed, 1 audit changed without impacting score

🗃️ Groups

🔌 Plugin 🗃️ Group ⭐ Previous score ⭐ Current score 🔄 Score change
Code coverage Code coverage metrics 🟢 92 🟢 92 ↓ −0.1

14 other groups are unchanged.

🛡️ Audits

🔌 Plugin 🛡️ Audit 📏 Previous value 📏 Current value 🔄 Value change
Code coverage Branch coverage 🟨 83.6 % 🟨 83.6 % ↓ −0.1 %
Code coverage Line coverage 🟩 94.8 % 🟩 94.8 % ↑ +0.1 %

443 other audits are unchanged.

💼 Project models

🤨 Code PushUp report has both improvements and regressions.

🕵️ See full comparison in Code PushUp portal 🔍

🏷️ Category ⭐ Previous score ⭐ Current score 🔄 Score change
Documentation 🟡 66 🟡 66 ↓ −0.1
Code coverage 🟢 94 🟢 94 ↑ +0.1

2 other categories are unchanged.

👍 1 group improved, 👎 1 group regressed, 👍 1 audit improved, 👎 1 audit regressed, 1 audit changed without impacting score

🗃️ Groups

🔌 Plugin 🗃️ Group ⭐ Previous score ⭐ Current score 🔄 Score change
JSDocs coverage Documentation coverage 🟡 66 🟡 66 ↓ −0.1
Code coverage Code coverage metrics 🟢 94 🟢 94 ↑ +0.1

10 other groups are unchanged.

🛡️ Audits

🔌 Plugin 🛡️ Audit 📏 Previous value 📏 Current value 🔄 Value change
JSDocs coverage Variables coverage 🟥 72 undocumented variables 🟥 76 undocumented variables ↑ +5.6 %
Code coverage Line coverage 🟩 99.4 % 🟩 99.4 % ↑ +0.1 %
JSDocs coverage Types coverage 🟥 53 undocumented types 🟥 57 undocumented types ↑ +7.5 %

434 other audits are unchanged.

💼 Project core

🥳 Code PushUp report has improved.

🕵️ See full comparison in Code PushUp portal 🔍

🏷️ Category ⭐ Previous score ⭐ Current score 🔄 Score change
Code coverage 🟢 90 🟢 90 ↑ +0.1

5 other categories are unchanged.

👍 1 group improved, 👍 1 audit improved

🗃️ Groups

🔌 Plugin 🗃️ Group ⭐ Previous score ⭐ Current score 🔄 Score change
Code coverage Code coverage metrics 🟢 90 🟢 90 ↑ +0.1

14 other groups are unchanged.

🛡️ Audits

🔌 Plugin 🛡️ Audit 📏 Previous value 📏 Current value 🔄 Value change
Code coverage Line coverage 🟩 94.8 % 🟩 94.8 % ↑ +0.1 %

443 other audits are unchanged.


5 other projects are unchanged.

@hanna-skryl hanna-skryl force-pushed the typescript-plugin-multi-tsconfig branch from 8f419a0 to 6122c13 Compare January 22, 2026 23:06
@hanna-skryl hanna-skryl marked this pull request as ready for review January 22, 2026 23:35
Comment on lines 7 to 15
/**
* TypeScript config patterns to look for in each project.
*/
const TSCONFIG_PATTERNS = new Set([
'tsconfig.lib.json',
'tsconfig.spec.json',
'tsconfig.test.json',
'tsconfig.app.json',
]);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Based on the VSCode Material Icon Theme, there are a lot more tsconfig file names in common use.

https://github.com/material-extensions/vscode-material-icon-theme/blob/e6bc94766159101048d2503314357500eb4d2659/src/core/icons/fileIcons.ts#L2546-L2578

Moreover, your list is missing tsconfig.json!

I suggest we match any file named tsconfig.json or tsconfig.*.json, so that we don't have to maintain a long list.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 for match naming pattern!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can match both tsconfig.json and tsconfig.*.json, explicitly exclude tsconfig.base.json by name, and filter out configs with empty files/include arrays. This way, we'll cover all naming conventions while still skipping the problematic ones.

The original list intentionally excluded tsconfig.json because in Nx monorepos, it's typically an empty config that only holds references to other config files. Including it would either check no files or cause duplicates. There's also a performance consideration: each tsconfig takes time to process (~40 seconds for all configs in this repo).

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would go with:

const TSCONFIG_PATTERN = /^tsconfig(\..+)?\.json$/;

This covers:

  • tsconfig.json
  • tsconfig.lib.json
  • tsconfig..json

Explicitly exclude known aggregator configs:

const EXCLUDED_TSCONFIGS = new Set([
  'tsconfig.base.json',
  'tsconfig.json'
]);

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Love it, thanks!

Copy link
Collaborator

@BioPhoton BioPhoton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice extend of our typescript plugin! Left a comment.

Copy link
Collaborator

@BioPhoton BioPhoton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With the last refinement it looks perfect!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Multi-project support for TypeScript plugin

4 participants